'use strict'

const path = require('path')

module.exports = (appInfo) => {
  const { env } = appInfo
  const prefix = 'wly-jd' // 前缀
  const dbName = 'wly_jd_test' // 数据库
  const tablePrefix = 'wly_jd' // 表前缀
  const storageDir =
    process.platform == 'linux' ? `/data/node/static/${prefix}` : path.join(__dirname, `../app/storage`)

  const config = {
    prefix,

    name: '五粮液鉴定服务站',

    host: 'http://127.0.0.1:7001',
    h5: 'http://localhost:3500/h5',
    client: 'http://localhost:7778/client',

    // controlServer: `https://fuwu.linkzl.com`, // 中控服务器（统一获取和刷新）

    dbName,

    // 资源存储路径
    storageDir,

    // 上传文件路径
    uploadDir: storageDir + '/public',

    mongodb: `mongodb://root:6a9L4EOXqtN3@1.95.15.145:1717/${dbName}?authSource=admin`,

    // 注意，开启此模式后，应用就默认自己处于反向代理之后，
    // 会支持通过解析约定的请求头来获取用户真实的 IP，协议和域名。
    // 如果你的服务未部署在反向代理之后，请不要开启此配置，以防被恶意用户伪造请求 IP 等信息。
    proxy: true,

    // 超级手机号（测试用）
    superMobile: ['13812345678'],

    // 聚合
    juhe: {
      keys: {
        // 短信
        sendSms: '3af84db18c621d9b92238e2abce15de2',
      },
      sendSms: {
        // 注册
        register: '92246',
        // 登陆
        login: '215058',
        // 忘记密码/或修改密码
        password: '92246',
      },

      // 快递查询
      express: '52f2db2b9bcf560062b7cdcb488d59c5',
    },
  }

  // Cookie签名秘钥
  config.keys = appInfo.name + '_1605061497228_1857'

  config.middleware = [
    // 'requestLog',
    'koaLogger',
  ]

  config.mongoose = {
    url: config.mongodb,
  }

  config.security = {
    csrf: false,
  }

  config.cors = {
    origin: (ctx) => ctx.headers.origin,
    credentials: true,
    // allowHeaders: 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With',
    // allowMethods: 'PUT,POST,GET,DELETE,OPTIONS',
  }

  config.static = {
    dir: [
      { prefix: '/', dir: config.uploadDir },
      { prefix: '/', dir: path.join(__dirname, '../app/public') },
      { prefix: '/temp', dir: config.storageDir + '/temp' },
    ],
  }

  // jwt
  config.jwt = {
    secret: config.keys + 'jwt2023',
    expiresIn: '7d', // 有效期
  }

  config.session = {
    key: prefix + 'SESSION_ID',
    maxAge: 1000 * 60 * 60 * 24 * 7, // 7天（毫秒）
    // maxAge: 1000 * 60 * 30, // 30分钟（毫秒）
    httpOnly: true,
    encrypt: true,
    renew: true, // 延长会话有效期
  }

  config.sessionMongoose = {
    name: 'Session',
  }

  config.jax = {
    mongoose: {
      prefix: tablePrefix,
    },
  }

  config.dict = require('./dict')
  config.constant = require('./constant')

  // 微信
  config.wechat = {
    // 公众号AppID(应用ID)
    appId: 'wxe28d377e59cdcfdf', // 五粮液服务站

    // 公众号AppSecret(应用密钥)
    secret: '10d848f042e3a653af344f90219c05ac',

    // 公众号微信授权
    auth: {
      // 授权APPID
      appId: 'wxe28d377e59cdcfdf',

      // 授权成功回调地址
      callbackUrl: `https://fuwu.linkzl.com/wechat/mp/oauth2`,

      // 应用授权作用域  snsapi_base 不弹出授权页面 snsapi_userinfo 弹窗授权
      scope: 'snsapi_base',

      // 授权有效期
      expireIn: '15d',

      // 公众号开发者
      developer: {
        openId: 'olmBO0UgkZI7rDDBqaoVfsmCEkCw',
        avatar:
          'https://thirdwx.qlogo.cn/mmopen/vi_32/YSXujl7peGcalAzE701fVO2M5fmwT71ibuRgV32SaoNv8o135gMPIOrousjF62HwVK4F7WfCjFcabwGXDwayatg/132',
        nickname: '路途',
        unionId: 'o5E7X6Vhvacj_lrvGe89HqPrBZ3I',
        country: '',
        province: '',
        city: '',
      },

      // systemAuth: '', // 第三方系统授权地址
      // systemCallbackUrl: '', // 第三方系统授权回调地址

      // interceptUrl: ['/test'], // 拦截URL
      // ignoreUrl: [], // 忽略URL

      // 本地环境
      isLocal: env == 'local' ? true : false,
    },

    // 小程序
    miniProgram: {
      // 众联
      appId: 'wxdb5e522588334ebb',
      secret: '4e368cc85e1c1ad7d72ed12f49a17527',
      envVersion: 'trial', // 默认环境是体验版，注意prod环境配置
    },

    // 商户号
    mchId: '1279102901',

    // 商户平台密钥
    partnerKey: 'qaOQohgYLm4WTZbIeFrblJ4Btbaz51Rp',

    // 商户证书
    pfx: path.join(__dirname, '../data/cert/apiclient_cert.p12'),

    // 微信支付回调URL
    notifyUrl: 'https://babo.linkzl.com/wechat/pay/notify',
  }

  config.development = {
    overrideDefault: true,
    // ignoreDirs: ['app/storage'],
    watchDirs: [
      'config',
      'app/router',
      'app/controller',
      'app/service',
      'app/view',
      'app/model',
      'app/middleware',
      'lib',
    ],
  }

  config.aliOSS = {
    region: 'oss-cn-chengdu',
    accessKeyId: 'LTAI4FtK7H8STrTJKD8f7YAS',
    accessKeySecret: 'PZjwWo6ktSF0XGepSsVziz228hOHhJ',
    bucket: 'zl-test-2021',
  }

  config.cluster = {
    listen: {
      hostname: '127.0.0.1',
      port: 7001,
    },
  }

  return config
}
